The present invention relates to error control coding or coding theory for digital communications. When digital data is transmitted across a channel or retrieved from storage there is a probability that one or more bits in the data will become corrupted and change in value due to noise over the communication channel or the storage. Depending on the device, it has been shown that proper encoding and decoding techniques can be used to counter these errors at any rate below the channel's or storage device's particular channel capacity. The channel capacity value is mathematically determined based on the bandwidth and signal-to-noise ratio of the particular link.
Coding theory in recent years has seen explosive growth as communications and storage has become a more integral part of business. Different types of coding schemes are used in compact disc players, cell phones, consumer and enterprise storage devices, the defense industry and other applications using digital technology. These technologies have driven researchers to develop encoding and decoding routines that best suit the particular device and best counteract any particular weaknesses in the communications or storage device.
Hamming codes are one type of coding scheme capable of detecting and helping correct errors occurring over various types of links. Conventional Hamming code designs are done in a brute force manner by exploring the many permutations that result when errors are introduced to communications occurring over a channel or on a storage device. In some cases, the type of error occurring on the channel is limited to a particular combination or class of errors. For example, a particular channel may be more likely to experience 3-bit adjacent errors than other types of errors due to the type of data transmitted over the channel or the nature of the channel device.
Despite the commercial value, conventional coding design methods continue to use brute force methods to design Hamming codes and other codes. These methods take into account specific qualities of the channel and consider the type of error likely to occur on the channel. Unfortunately, the conventional approach to designing a Hamming code are not efficient as it requires exploring any or all possible permutations rather than use an efficient heuristic or other more direct approach.
There is a need to address at least the aforementioned problems and develop Hamming codes with particular qualities in a more efficient manner.
Like reference numbers and designations in the various drawings indicate like elements.